/**
 * @properties={typeid:35,uuid:"2319B6A7-8A18-429F-AC4F-C285BEF4F362",variableType:4}
 */
var gUsuario_cons = null;

/**
 * @properties={typeid:35,uuid:"B6EC6E81-151D-45D9-9495-A3829764004D",variableType:93}
 */
var gFecha = null;

/**
 * @properties={typeid:35,uuid:"9CC9299D-D9D7-486E-9D9B-74668279F00F",variableType:4}
 */
var gGrupo = null;

/**
 * @properties={typeid:35,uuid:"4FA6B8AB-37E3-4237-A54B-3C965F98C15C",variableType:4}
 */
var gPaciente = null;

/**
 * @properties={typeid:35,uuid:"E91CA82C-CEB4-418D-8E0D-5E7B3CF2A1AB",variableType:4}
 */
var gTurno = null;

/**
 * @properties={typeid:35,uuid:"04C38221-D8A0-4861-BCA7-0917EBA2349E",variableType:4}
 */
var gUsuario = null;

/**
 * @properties={typeid:24,uuid:"A783E78B-DEF3-456F-91E0-759F4C774438"}
 */
function crearCalendario() {
	
	var $nombre = 'calendario'
	history.removeForm($nombre)
	solutionModel.removeForm($nombre)

	var $fecha = globals.gFecha
	
	var $var = globals.calcularHorarios($fecha)
	if ($var != 0)
	{
		var $cant_horas = $var[0]
		var $horarios = $var[1]
	
		var $campos = new Array('TurnoID','Hora','Condicion','Paciente','Presente','Atendido','PacienteID')
		
		var $tabla = databaseManager.createEmptyDataSet(0,$campos)
		for (var j=0;j<$cant_horas;j++)
		{
			var $fila = new Array(null,$horarios[j],'LIBRE','',0,0)
			$tabla.addRow(j+1,$fila)
		}
		
		var $turnos = gusuario_to_turnos
		$turnos.find()
		$turnos.fecha = '#'+$fecha+'|dd-MM-yyyy'
		var $f = $turnos.search()
		if ($f != 0)
		{
			for(var i = 1; i <=$f; i++)
			{
				$turnos.setSelectedIndex(i)
				var $fila = globals.sacarFila($turnos.fecha, $horarios)
				if ($fila != -1)
				{
					$tabla.setValue($fila+1,1,$turnos.turnos_id)
					$tabla.setValue($fila+1,3,'ocupado')
					$tabla.setValue($fila+1,4,$turnos.turnos_to_pacientes.nombre)
					$tabla.setValue($fila+1,5,$turnos.presencia)
					$tabla.setValue($fila+1,6,$turnos.atencion)
					$tabla.setValue($fila+1,7,$turnos.paciente_id)
				}
			}
		}
		
		var $tipos = new Array (JSColumn.INTEGER,JSColumn.DATETIME,JSColumn.TEXT,JSColumn.TEXT,JSColumn.INTEGER,JSColumn.INTEGER,JSColumn.INTEGER)
		var $frm = solutionModel.newForm( $nombre, $tabla.createDataSource('calendario',$tipos) ,  null, null, 'false',  800, 600)
		
		$frm.view = JSForm.LOCKED_TABLE_VIEW
		$frm.transparent = true
		
		$frm.newTitleHeaderPart(60)
		var text = 'Medico: '+gusuario_medico_to_usuarios.nombre + ' Dia:'+ utils.dateFormat(globals.gFecha,'dd-MM-yyyy')
		var $lbl = $frm.newLabel(text,0,0,500,40)
		$lbl.transparent = true
		$lbl.fontType = 'Tahoma,plain,18'
		
		var $btn = $frm.newButton('Refrescar',30,40,100,20,solutionModel.getGlobalMethod('refrescarCalendario'))
		
		var $y = $frm.getPartYOffset(JSPart.BODY)
		
		var $fld = $frm.newField($campos[1],JSField.TEXT_FIELD,0,$y,100,20)
		$fld.name = $campos[1]
		$fld.titleText = 'Hora'
		$fld.editable = false
		$fld.format = 'HH:mm'
		$fld.transparent = true
		
		var $btn = $frm.newButton(null,100,$y,100,20,solutionModel.getGlobalMethod('calendario_alta'))
		$btn.name = $campos[2]
		$btn.dataProviderID = $campos[2]
		                              
		var $fld = $frm.newField($campos[3],JSField.TEXT_FIELD,200,$y,100,20)
		$fld.name = $campos[3]
		$fld.titleText = 'Paciente'
		$fld.editable = false
		$fld.transparent = true
		
		var $fld = $frm.newCheck($campos[4],300,$y,20,20)
		$fld.name = $campos[4]
		$fld.titleText = 'P'
		$fld.borderType = 'Empty'
		//$fld.editable = false
		$fld.toolTipText = 'Presente'
		$fld.onDataChange = solutionModel.getGlobalMethod('onDataChangePresente')
		$fld.transparent = true
		
		var $fld = $frm.newCheck($campos[5],320,$y,20,20)
		$fld.name = $campos[5]
		$fld.titleText = 'A'
		$fld.borderType = 'Empty'
		//$fld.editable = false
		$fld.toolTipText = 'Atendido'
		$fld.onDataChange = solutionModel.getGlobalMethod('onDataChangeAtendido')
		$fld.transparent = true
		
		var $btn = $frm.newButton('Datos',340,$y,80,20,solutionModel.getGlobalMethod('verDatosPaciente'))
		$btn.name = 'data_paciente'
		           
		var $btn = $frm.newButton('Ficha',420,$y,60,20,solutionModel.getGlobalMethod('verDatosFicha'))
		$btn.name = 'data_clinica'
			
		var $btn = $frm.newButton('Cta Cte',480,$y,80,20,solutionModel.getGlobalMethod('verCC'))
		$btn.name = 'cta_cte'
			
		var $btn = $frm.newButton('Alta CC',560,$y,80,20,solutionModel.getGlobalMethod('verAltaCC'))
		$btn.name = 'alta_cc'
		
		globals.mostrarForm($frm.name)
		//forms[$frm.name].controller.show()
	}
	else
		globals.gDialog ('Error','Se produjo un error al calcular los horarios','OK','CerrarForm')
}

/**
 * @properties={typeid:24,uuid:"31FAFE4E-E4E0-4784-B161-1F40222C25DC"}
 */
function calcularHorarios(pFecha)
{
	var $horarios_dia = gusuario_to_turnos_disponibles.turnos_disponibles_to_turnos_disponibles_dias.duplicateFoundSet()
	
	$horarios_dia.find()
	
	$horarios_dia.dia = pFecha.getDay()
	
	var $f = $horarios_dia.search()
	if ($f == 0)
		//ERROR
		return 0
	else
	{
		var $frecuencia = gusuario_to_turnos_disponibles.frecuencia
		var $comienzo = new Date (pFecha.getFullYear(),pFecha.getMonth(),pFecha.getDate(),$horarios_dia.hora_comienzo_1.getHours(),$horarios_dia.hora_comienzo_1.getMinutes(),0)
		var $corte = new Date (pFecha.getFullYear(),pFecha.getMonth(),pFecha.getDate(),$horarios_dia.hora_corte_1.getHours(),$horarios_dia.hora_corte_1.getMinutes(),0)
		var $horarios = new Array()
		var i = 0
		
		while ($comienzo <= $corte)
		{
			$horarios[i] = $comienzo
			var m = $comienzo.getMinutes() + $frecuencia
			$comienzo = new Date ($comienzo.getFullYear(),$comienzo.getMonth(),$comienzo.getDate(),$comienzo.getHours(),m,$comienzo.getSeconds())
			i++
		}
		
		if ($horarios_dia.hora_comienzo_2 != null)
		{
			var $comienzo = new Date (pFecha.getFullYear(),pFecha.getMonth(),pFecha.getDate(),$horarios_dia.hora_comienzo_2.getHours(),$horarios_dia.hora_comienzo_2.getMinutes(),0)
			var $corte = new Date (pFecha.getFullYear(),pFecha.getMonth(),pFecha.getDate(),$horarios_dia.hora_corte_2.getHours(),$horarios_dia.hora_corte_2.getMinutes(),0)
			
			while ($comienzo <= $corte)
			{
				$horarios[i] = $comienzo
				var m = $comienzo.getMinutes() + $frecuencia
				$comienzo = new Date ($comienzo.getFullYear(),$comienzo.getMonth(),$comienzo.getDate(),$comienzo.getHours(),m,$comienzo.getSeconds())
				i++
			}
		}
		return new Array (i, $horarios)
	}
}

/**
 * @properties={typeid:24,uuid:"4E334801-567D-4BE9-BC0F-BA641485F5ED"}
 */
function sacarFila(pFecha, pHorarios)
{
	var i = 0

	while (pHorarios[i] != pFecha && i <pHorarios.length)
	{
		i++
	}
	if (i < pHorarios.length)
	{
		return i
	}
	return -1
}

/**
 * @properties={typeid:24,uuid:"2F4448DD-FCEB-49EE-A832-3669DB7E65BE"}
 */
function calendario_alta(event) {
	if (forms['calendario'].condicion == 'LIBRE')
	{
		databaseManager.setAutoSave(false)
		forms.turnos_dlg.controller.newRecord()
		
		var dia = forms['calendario'].hora
		
		forms.turnos_dlg.fecha = dia
		forms.turnos_dlg.hora = dia
		forms.turnos_dlg.usuario_id = globals.gUsuario
		forms.turnos_dlg.grupo_id = globals.gGrupo
		
		application.showFormInDialog(forms.turnos_dlg,-1,-1,-1,-1,'Turnos',false,false,'turno_dlg',true)
	}
	else
	{
		var dia = forms['calendario'].hora
		forms.turnos_dlg_ocupado.controller.find()
		forms.turnos_dlg_ocupado.usuario_id = globals.gUsuario
		forms.turnos_dlg_ocupado.grupo_id = globals.gGrupo
		forms.turnos_dlg_ocupado.fecha = dia
		forms.turnos_dlg_ocupado.hora = dia
		if (forms.turnos_dlg_ocupado.controller.search() == 0)
			globals.gDialog('Error','No se encontro el turno','OK','CerrarForm')
		else
			application.showFormInDialog(forms.turnos_dlg_ocupado,-1,-1,-1,-1,'Turnos',false,false,'turno_dlg_ocupado',true)
	}
}

/**
 * @properties={typeid:24,uuid:"5F5A8743-E3CF-4C77-98F1-7422E3C65E6E"}
 */
function refrescarCalendario()
{
	
	var $nombre = 'calendario'

	var $fecha = globals.gFecha
	
	var $var = globals.calcularHorarios($fecha)
	if ($var != 0)
	{
		var $cant_horas = $var[0]
		var $horarios = $var[1]
	
		var $campos = new Array('TurnoID','Hora','Condicion','Paciente','Presente','Atendido','PacienteID')
		
		var $tabla = databaseManager.createEmptyDataSet(0,$campos)
		for (var j=0;j<$cant_horas;j++)
		{
			var $fila = new Array(null,$horarios[j],'LIBRE','',0,0)
			$tabla.addRow(j+1,$fila)
		}
		var $turnos = databaseManager.getFoundSet('medicos','turnos')
		$turnos.loadAllRecords()

		$turnos.find()
		$turnos.usuario_id = globals.gUsuario
		$turnos.fecha = '#'+$fecha+'|dd-MM-yyyy'
		var $f = $turnos.search()
		if ($f != 0)
		{
			for(var i = 1; i <=$f; i++)
			{
				$turnos.setSelectedIndex(i)
				var $fila = globals.sacarFila($turnos.fecha, $horarios)
				if ($fila != -1)
				{
					$tabla.setValue($fila+1,1,$turnos.turnos_id)
					$tabla.setValue($fila+1,3,'ocupado')
					$tabla.setValue($fila+1,4,$turnos.turnos_to_pacientes.nombre)
					$tabla.setValue($fila+1,5,$turnos.presencia)
					$tabla.setValue($fila+1,6,$turnos.atencion)
					$tabla.setValue($fila+1,7,$turnos.paciente_id)
				}
			}
		}
		
		var $tipos = new Array (JSColumn.INTEGER,JSColumn.DATETIME,JSColumn.TEXT,JSColumn.TEXT,JSColumn.INTEGER,JSColumn.INTEGER,JSColumn.INTEGER)
		var $frm = solutionModel.getForm($nombre)

		$frm.dataSource = $tabla.createDataSource('calendario',$tipos)
		
		forms[$nombre].controller.recreateUI()
		globals.mostrarForm($nombre)
	}
}

/**
 * @properties={typeid:24,uuid:"31B8DDED-65EC-4C84-94C8-92EB18EAF59F"}
 */
function onDataChangeAtendido(oldValue, newValue, event)
{
	globals.gTurno = forms['calendario'].turnoid
	gturno_to_turnos.atencion = newValue
	databaseManager.saveData()
	return true
}

/**
 * @properties={typeid:24,uuid:"636E2BA4-5C48-41D8-B2BA-6AEE0248EDF5"}
 */
function onDataChangePresente(oldValue, newValue, event)
{
	globals.gTurno = forms['calendario'].turnoid
	gturno_to_turnos.presencia = newValue
	databaseManager.saveData()
	return true
}

/**
 * @properties={typeid:24,uuid:"BA92646E-2FBE-414A-8F21-F459FFF7BD27"}
 */
function verDatosPaciente() {
	if (forms.calendario.pacienteid == null)
		globals.gDialog('Error','El turno no esta tomado','OK','CerrarForm')
	else
	{	
		forms.turnos_pacientes_dtl.controller.find()
		forms.turnos_pacientes_dtl.paciente_id = forms.calendario.pacienteid
		forms.turnos_pacientes_dtl.controller.search()
		application.showFormInDialog(forms.turnos_pacientes_dtl,-1,-1,-1,-1,'Paciente...',true,false,'PACIENTE',true)
	}
}

/**
 * @properties={typeid:24,uuid:"56446E79-A7E4-4866-A8F7-BE8E42C793D7"}
 */
function verDatosFicha() {
	if (forms.calendario.pacienteid == null)
		globals.gDialog('Error','El turno no esta tomado','OK','CerrarForm')
	else
	{	
		forms.turnos_ficha_clinica_tbl.controller.find()
		forms.turnos_ficha_clinica_tbl.paciente_id = forms.calendario.pacienteid
		forms.turnos_ficha_clinica_tbl.controller.search()
		application.showFormInDialog(forms.turnos_ficha_clinica_tbl,-1,-1,-1,-1,'Ficha...',true,false,'FICHA',true)
	}
}

/**
 * @properties={typeid:24,uuid:"21C2734A-A67C-4D1B-A6CA-BFB791334931"}
 */
function verCC() {
	if (forms.calendario.pacienteid == null)
		globals.gDialog('Error','El turno no esta tomado','OK','CerrarForm')
	else
	{	
		forms.cuenta_corriente_tbl.controller.find()
		forms.cuenta_corriente_tbl.paciente_id = forms.calendario.pacienteid
		forms.cuenta_corriente_tbl.controller.search()
		application.showFormInDialog(forms.cuenta_corriente_tbl,-1,-1,-1,-1,'Cuenta Corriente',true,false,'CTACTE',true)
	}
}

/**
 * @properties={typeid:24,uuid:"D58E6D2B-0A63-4A7E-8652-2BFDF5B4C6AC"}
 */
function verAltaCC()
{
	databaseManager.setAutoSave(false)
	if (forms.calendario.pacienteid == null)
		globals.gDialog('Error','El turno no esta tomado','OK','CerrarForm')
	else
	{
		forms.cuenta_corriente_turno.controller.find()
		forms.cuenta_corriente_turno.paciente_id 		= forms.calendario.pacienteid
		forms.cuenta_corriente_turno.medico_id 			= globals.gUsuario
		forms.cuenta_corriente_turno.grupo_id 			= globals.gGrupo
		forms.cuenta_corriente_turno.fecha_turno_origen 	= globals.gFecha
		
		if (forms.cuenta_corriente_turno.controller.search() == 0)
		{
			forms.cuenta_corriente_turno.controller.newRecord()
			forms.cuenta_corriente_turno.paciente_id        = forms.calendario.pacienteid
			forms.cuenta_corriente_turno.medico_id          = globals.gUsuario
			forms.cuenta_corriente_turno.grupo_id           = globals.gGrupo
			forms.cuenta_corriente_turno.fecha_turno_origen = globals.gFecha
			forms.cuenta_corriente_turno.tipo_movim			= 1 //Turno
			forms.cuenta_corriente_turno.fPagado			= 0
		}
		application.showFormInDialog(forms.cuenta_corriente_turno,-1,-1,-1,-1,'Cuenta Corriente',true,false,'ALTACC',true)
	}
}

/**
 * @properties={typeid:24,uuid:"6C37A656-8FAF-421D-9840-ED4670B52116"}
 */
function primerMetodo() {
	globals.gUsuario = gusuario_fwk_to_usuarios.usuario_id
	application.showFormInDialog(forms.elije_grupo,-1,-1,-1,-1,'Elija un grupo...',false,false,'GRUPO',true)
}
